﻿#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>



//int main()
//{
//	printf("hehe\n");
//	main();
//	//main函数调用main函数
//	return 0;
//}

//int fact(int n)
//{
//	if (n == 0)
//		return 1;
//	else
//		return n * fact(n - 1);
//}
//
//int main()
//{
//	int n = 0;
//	printf("请输入：");
//	scanf("%d", &n);
//	printf("%d的阶乘是：%d\n", n,fact(n));
//	return 0;
//}

//输⼊⼀个整数m，按照顺序打印整数的每⼀位
//void print(int n)
//{
//	if (n > 9)
//	{
//		//如果n大于9，那么就用
//		//print函数打印去掉最后数字
//		//的每一位，方法是/10
//		print(n / 10);
//	}
//		//如果n小于等于9，说明它是
//		//一位数，就可以结束递归，然后开始返回
//		//这个数的每一位，方法就是%10
//	    printf("%d ", n % 10);
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print(n);
//	return 0;
//}

//利用迭代求n的阶乘
//
//int fact(int n)
//{
//	int i = 0;
//	int sum = 1;
//		if (n == 0)
//			return 1;
//		else
//		{
//			for (i = 1; i <= n; i++)
//			{
//				sum *= i;
//			}
//			return sum;
//		}
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	printf("%d\n", fact(n));
//	return 0;
//}

//利用递归求第n个斐波那契数：
//
//int count = 0;
//
//int fib(int n)
//{
//	if (n == 3)
//		计算fib(3)算的次数
//		count++;
//	if (n <= 2)
//		return 1;
//	else
//		return fib(n - 1) + fib(n - 2);
//
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	printf("%d\n", fib(n));
//	printf("%d\n", count);
//	return 0;
//}

//利用迭代求第n个斐波那契数

int fact(int n)
{
	int i = 1;
	int a = 1;
	int b = 1;
	int ret = 1;
	if (n <= 2)
		return 1;
	else
	{ 
		for (i = 3; i <= n; i++)
		{
			ret = a + b;
			a = b;
			b = ret;
		}
		return ret;
	}
	

}

int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d\n", fact(n));
	return 0;
}